package com.imooc.coupon.converter;

import com.imooc.coupon.constant.CouponCategory;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

/**
 * 优惠券分类枚举属性转换器
 * AttributeConverter<X,Y>
 *     X： 属性对应的实体类型
 *     Y: 属性在数据表中的存储类型
 * Created By TINY
 * Create Time 2020/2/9 - 16:58
 **/
@Converter // 表明这是一个转换器
public class CategoryConverter
        implements AttributeConverter<CouponCategory, String> {

    /**
     * 将实体属性值转化为数据库中对应字段值
     * @param couponCategory 属性所在实体类
     * @return 数据库字段值
     */
    @Override
    public String convertToDatabaseColumn(CouponCategory couponCategory) {
        return couponCategory.getCode();
    }

    /**
     * 将数据库中对应的字段值转化为实体类中的属性值
     * @param code 数据库字段值
     * @return  实体类属性值
     */
    @Override
    public CouponCategory convertToEntityAttribute(String code) {
        return CouponCategory.of(code);
    }
}
